layui.use('table', function (){

    let table = layui.table //表格
    //第一个实例
    table.render({
        elem: '#demo1'
        , url: '/findStudentInformation' //数据接口
        , method: 'POST'
        , page: true //开启分页
        , toolbar: 'default' //开启工具栏，此处显示默认图标，可以自定义模板，详见文档
        , limit: 7
        , id:'testReload'
        , limits: [3, 5, 7]
        , cols: [[
            { field: 'stuId',width: 80, type: 'checkbox' },
            { field: 'stuId', width: 100, title: '学生ID', sort: true,hide:true,hide:true},
            { field: 'stuNum', width: 90,title: '学号', sort: true,},
            { field: 'stuName', width: 90,title: '学生姓名' },
            { field: 'mobile', width: 120,title: '手机号' },
            { field: 'sex', width: 60,title: '性别' , },
            { field: 'age', width: 90,title: '年龄', sort: true },
            { field: 'idType', width: 150,title: '证件类型' },
            { field: 'idNum', width: 190,title: '证件号码', sort: true },
            { field: 'birthday', width: 140,title: '出生日期', sort: true },
            { field: 'nativePlace', width: 140,title: '籍贯' },
            { field: 'detailAddr', width: 220,title: '详细信息' },
            { field: 'createDate', width: 120,title: '创建时间', sort: true },
            { field: 'updateDate', width: 120,title: '修改时间', sort: true },
            { field: 'right', width: 200, title: '操作', toolbar: '#barDemo1' },

        ]],

        done: function(res, curr, count) {
            $("[data-field='sex']").children().each(function () {
                if ($(this).text() == '男') {
                    $(this).text('男');
                } else if ($(this).text() == '女') {
                    $(this).text('女');
                }
            });
            $("[data-field='idType']").children().each(function () {
                if ($(this).text() == '1') {
                    $(this).text('身份证');
                } else if ($(this).text() == '2') {
                    $(this).text('军人证');
                }else if ($(this).text() == '3') {
                    $(this).text('护照');
                }else if ($(this).text() == '4') {
                    $(this).text('户口本');
                }else if ($(this).text() == '5') {
                    $(this).text('外国人永久居留证');
                }else if ($(this).text() == '6') {
                    $(this).text('武警证');
                }else if ($(this).text() == '7') {
                    $(this).text('公章');
                }else if ($(this).text() == '8') {
                    $(this).text('工商营业执照');
                }else if ($(this).text() == '9') {
                    $(this).text('法人代码证');
                }else if ($(this).text() == '10') {
                    $(this).text('学生证');
                }else if ($(this).text() == '11') {
                    $(this).text('士兵证');
                }else if ($(this).text() == '16') {
                    $(this).text('港澳居民来往内地通行证');
                }else if ($(this).text() == '17') {
                    $(this).text('台湾居民来往内地通行证');
                }else if ($(this).text() == '18') {
                    $(this).text('其他证件类型');
                }
            });

            $("[data-field='updateDate']").children().each(function () {
                var birthday = $(this).text();
                if(birthday.indexOf('修改时间')==-1){
                    $(this).text(getYMDHMS(parseInt(birthday)));
                }
            });

        },
        parseData: function (res) { //将原始数据解析成 table 组件所规定的数据
            return {
                "code": res.code, //解析接口状态
                "msg": res.msg, //解析提示文本
                "count": res.count, //解析数据长度
                "data": res.data //解析数据列表
            };
        },
        request: {
            pageName: 'page' // 页码的参数名称，默认：page
            , limitName: 'limit' //每页数据量的参数名，默认：limit
        }

    });





    //升序降序后重新渲染
    table.on('sort(test)', function(obj) {
        table.reload('testReload', {
            initSort: obj
        });
    });
    table.reload('testReload', {});
    //表单数据重载
    var $ = layui.$,active = {
        reload: function(){
            var stuName=$("#stuName");
            var mobile=$("#mobile");
            var sex=$("#sex");
            var age=$("#age");
            var idNum=$("#idNum");
            let gradeName = $("#gradeName");
            //执行重载
            table.reload('testReload', {
                page: {
                    curr: 1 //重新从第 1 页开始
                }
                ,where: {
                    stuName: stuName.val(),
                    mobile: mobile.val(),
                    sex: sex.val(),
                    age: age.val(),
                    idNum: idNum.val(),
                    gradeName:gradeName.val()
                }
            });
        }
    };
    $('.demoTable .layui-btn').on('click', function(){
        var type = $(this).data('type');
        active[type] ? active[type].call(this) : '';
    });

    //监听头工具事件
    table.on('toolbar(test)', function(obj){
        var checkStatus = table.checkStatus(obj.config.id)
            ,data = checkStatus.data //获取选中的数据
            ,delList=[]
            ,delStuName = ''
        let dormitoryId= $("#dormitoryId").val();
        let dormitoryName= $("#dormitoryName").val();
        for(var i=0;i<data.length;i++){
            delList.push(data[i].stuId);
            delStuName+=data[i].stuName+""
        }
        var json = {"stuIds": delList,"dormitoryId":dormitoryId,"dormitoryName":dormitoryName};
        switch(obj.event){

            case 'add':
                layer.msg('批量添加');
                if (data.length === 0) {
                    layer.msg('请选择一行');
                } else {
                    layer.msg('添加');
                    layer.confirm('确认添加 ' + delStuName + "吗？", function (index) {
                        $.ajax({
                            type: "post",
                            url: "/dormitoryAddStu",
                            contentType: "application/json;charset=utf-8",
                            data: JSON.stringify(json),
                            dataType: "json",
                            success: function (istData) {
                                if (istData.code == "0000") {
                                    layer.msg(istData.msg+istData.data+"名学生", {icon: 6, time: 1000}, function () {
                                        window.location.reload();
                                    })
                                } else if (istData.code == "8888") {
                                    layer.msg('添加失败', {icon: 5, time: 1000}, function () {
                                        alert(istData.msg+",已经添加过其中的学生")
                                        window.location.reload();
                                    })
                                }
                            }, error: function (error) {
                                layer.msg("添加请求失败");
                            }
                        })
                    })

                }
                break;
            case 'update':
                if(data.length === 0){
                    layer.msg('请选择一行');
                } else if(data.length > 1){
                    layer.msg('只能同时编辑一个');
                } else {
                    layer.alert('编辑 [id]：'+ checkStatus.data[0].id);
                }
                break;
            case 'delete':
                if(data.length === 0){
                    layer.msg('请选择一行');
                } else {
                    layer.msg('删除');
                    $.ajax({                //批量删除
                        type:"post",
                        url:"/deleteList",
                        contentType: "application/json;charset=utf-8",
                        data:JSON.stringify(json),
                        dataType:"json",
                        success:function (delData) {
                            if(delData > 1){
                                layer.msg('删除成功',{icon:6,time:1000},function () {
                                    window.location.reload();
                                })
                            }else if(delData < 1) {
                                layer.msg('删除失败', {icon: 5, time: 1000}, function () {
                                    window.location.reload();
                                })
                            }
                        },error:function (error) {
                            layer.msg("删除请求失败");
                        }
                    })
                }
                break;
        };
    });

    //监听行工具事件
    table.on('tool(test)', function(obj){ //注：tool 是工具条事件名，test 是 table 原始容器的属性 lay-filter="对应的值"
        var data = obj.data //获得当前行数据
            ,layEvent = obj.event //获得 lay-event 对应的值
            ,dropdown=layui.dropdown;

        let dormitoryId= $("#dormitoryId").val();
        let dormitoryName= $("#dormitoryName").val();
        if(layEvent === 'addStudent') {
                var istData={
                    "stuId":data.stuId,
                    "dormitoryId":dormitoryId,
                    "dormitoryName":dormitoryName
                }

                $.ajax({
                    type:"post",
                    url:"/insertAddStu",
                    data:JSON.stringify(istData),
                    contentType: "application/json;charset=utf-8",
                    dataType:"json",
                    success:function (istData) {
                        if(istData=='1'){
                            layer.msg('添加成功',{icon:6,time:1000},function () {
                                window.location.reload();
                            })
                        }else if(istData=='0'){
                            layer.msg('添加失败',{icon:5,time:1000},function () {
                                window.location.reload();
                            })
                        }
                    },error:function (error) {
                        layer.msg("添加请求失败")
                    }

                });

        } else if(layEvent === 'more'){

            //下拉菜单
            dropdown.render({
                elem: this //触发事件的 DOM 对象
                ,show: true //外部事件触发即显示
                ,data: [{
                    title: '编辑'
                    ,id: 'edit'
                },{
                    title: '删除'
                    ,id: 'del'
                }]
                ,click: function(menudata){
                    if(menudata.id === 'del'){
                        layer.confirm('真的删除行么', function(index){
                            obj.del(); //删除对应行（tr）的DOM结构
                            //layer.close(index);
                            //向服务端发送删除指令
                            $.ajax({
                                type:'post',
                                url:"/studentDelete",
                                data:JSON.stringify(data),
                                contentType:'application/json;charset=utf-8',
                                dataType:"json",
                                success:function (data) {
                                    if(data=='1'){
                                        layer.msg('删除成功',{icon:6,time:1000},function () {
                                            window.location.reload();
                                        })
                                    }else if(data=='0'){
                                        layer.msg('删除失败',{icon:5,time:1000},function () {
                                            window.location.reload();
                                        })
                                    }
                                },error:function (error) {
                                    alert("请求失败")
                                }
                            })
                        });
                    } else if(menudata.id === 'edit'){
                        layer.msg('编辑操作，当前行 ID:'+ data.stuId);
                        layer.open({
                            type: 1 //此处以iframe举例
                            , title:'学生'+data.stuName+'的信息'
                            , area: ['800px', '600px']
                            , shade: 0
                            , maxmin: true
                            ,content:$("#updatePage")
                        })
                        //数据回显
                        $("#updStuName").val(data.stuName);//姓名
                        $("#updMobile").val(data.mobile);//手机号
                        $("#updSex").val(data.sex);//性别
                        $("#updIdType").val(data.idType);//证件类型
                        $("#updIdNum").val(data.idNum);//证件号码
                        //省市县下拉框
                        $.ajax({
                            type:"post",
                            url:'/updateView',
                            data:JSON.stringify(data),
                            contentType: "application/json;charset=utf-8",
                            dataType: "json",
                            success:function (stu) {
                                $.ajax({
                                    type:"post",
                                    url:"/provinces",
                                    contentType: "application/json;charset=utf-8",
                                    dataType:"json",
                                    success:function (provinces) {
                                        var $province="<option value=''>请选择</option>";
                                        for(var i=0;i<provinces.length;i++) {
                                            $province+="<option value="+provinces[i].provinceid+">"+provinces[i].province+"</option>"
                                        }
                                        $("select[name='province']").html($province);
                                        $("select[name='province']").val(stu.provincesId);

                                        //回显原籍贯
                                        $.ajax({
                                            type:"post",
                                            url:"/cities",
                                            contentType: "application/json;charset=utf-8",
                                            dataType:"json",
                                            success:function (cities) {
                                                var $city="<option value=''>请选择</option>";
                                                for(var i=0;i<cities.length;i++) {
                                                    if($("select[name='province'] option:selected").val()==cities[i].provinceid){
                                                        $city+="<option value="+cities[i].cityid+">"+cities[i].city+"</option>"
                                                    }
                                                }
                                                $("select[name='city']").html($city);
                                                $("select[name='city']").val(stu.citiesId);

                                                $.ajax({
                                                    type:"post",
                                                    url:"/areas",
                                                    contentType: "application/json;charset=utf-8",
                                                    dataType:"json",
                                                    success:function (areas) {
                                                        var $area="<option value=''>请选择</option>"
                                                        for(var i=0;i<areas.length;i++) {
                                                            if($("select[name='city'] option:selected").val()==areas[i].cityid){
                                                                $area+="<option value="+areas[i].areaid+">"+areas[i].area+"</option>"
                                                            }
                                                        }
                                                        $("select[name='area']").html($area);
                                                        $("select[name='area']").val(stu.areasId);
                                                    },error:function () {
                                                        layer.msg("请求失败4");
                                                    }
                                                })

                                            },error:function () {
                                                layer.msg("请求失败3");
                                            }
                                        })

                                        //当select发生改变时
                                        $("select[name='province']").change(function(){
                                            $.ajax({
                                                type:"post",
                                                url:"/cities",
                                                contentType: "application/json;charset=utf-8",
                                                dataType:"json",
                                                success:function (cities) {
                                                    var $city="<option value=''>请选择</option>";
                                                    for(var i=0;i<cities.length;i++) {
                                                        if($("select[name='province'] option:selected").val()==cities[i].provinceid){
                                                            $city+="<option value="+cities[i].cityid+">"+cities[i].city+"</option>"
                                                        }
                                                    }
                                                    $("select[name='city']").html($city);
                                                    $("select[name='area']").html("<option value=''>请选择</option>");
                                                    $("select[name='city']").change(function(){
                                                        $.ajax({
                                                            type:"post",
                                                            url:"/areas",
                                                            contentType: "application/json;charset=utf-8",
                                                            dataType:"json",
                                                            success:function (areas) {
                                                                var $area="<option value=''>请选择</option>"
                                                                for(var i=0;i<areas.length;i++) {
                                                                    if($("select[name='city'] option:selected").val()==areas[i].cityid){
                                                                        $area+="<option value="+areas[i].areaid+">"+areas[i].area+"</option>"
                                                                    }
                                                                }
                                                                $("select[name='area']").html($area);
                                                            },error:function () {
                                                                layer.msg("改变请求失败4");
                                                            }
                                                        })
                                                    })

                                                },error:function () {
                                                    layer.msg("改变请求失败3");
                                                }
                                            })
                                        });

                                    },error:function (error) {
                                        layer.msg("请求失败2");
                                    }
                                })

                            },error:function (error) {
                                layer.msg("请求失败1");
                            }
                        })
                        $("#updDetailAddr").val(data.detailAddr);//详细信息

                        $("#updateStu").click(function () {
                            var updData={
                                "stuId":data.stuId,
                                "stuName":$("#updStuName").val(),
                                "mobile":$("#updMobile").val(),
                                "sex":$("#updSex").val(),
                                "idType":$("#updIdType").val(),
                                "idNum":$("#updIdNum").val(),
                                "provincesId":$("select[name='province']").val(),
                                "citiesId":$("select[name='city']").val(),
                                "areasId":$("select[name='area']").val(),
                                "detailAddr":$("#updDetailAddr").val()
                            }
                            $.ajax({
                                type:"post",
                                url:"/updateStu",
                                data:JSON.stringify(updData),
                                contentType: "application/json;charset=utf-8",
                                dataType:"json",
                                success:function (upddata) {
                                    if(upddata=='1'){
                                        layer.msg('修改成功',{icon:6,time:1000},function () {
                                            window.location.reload();
                                        })
                                    }else if(upddata=='0'){
                                        layer.msg('修改失败',{icon:5,time:1000},function () {
                                            window.location.reload();
                                        })
                                    }
                                },error:function (error) {
                                    layer.msg("修改请求失败")
                                }

                            })
                        })


                    }
                }
                ,align: 'right' //右对齐弹出（v2.6.8 新增）
                ,style: 'box-shadow: 1px 1px 10px rgb(0 0 0 / 12%);' //设置额外样式
            })
        }
    });
});